//============================================================================================
/**
 * @file	p_status.h
 * @brief	ポケモンステータス画面
 * @author	Hiroyuki Nakamura
 * @date	2005.10.26
 */
//============================================================================================
#ifndef P_STATUS_H
#define P_STATUS_H

#include "savedata/config.h"
#include "system/keytouch_status.h"
#undef GLOBAL
#ifdef P_STATUS_H_GLOBAL
#define GLOBAL	/*	*/
#else
#define GLOBAL	extern
#endif


// パフォーマンス値を表す星の数
#define PERFORMANCE_STAR_MAX	( 5 )


//============================================================================================
//	定数定義
//============================================================================================
typedef struct {
	void * ppd;		// ポケモンデータ
	CONFIG * cfg;	// コンフィグデータ

	const STRCODE * player_name;	// 見ている人の名前
	u32	player_id;					// 見ている人のID
	u8	player_sex;					// 見ている人の性別

	u8	ppt;		// パラメータタイプ
	u8	mode;		// モード
	u8	max;		// 最大数
	u8	pos;		// 何番目のデータか

	u8	page_flg;	// ページフラグ
	u8	ret_sel;	// 選択された技位置
	u8	ret_mode;
	u16	waza;

	u32				zukan_mode;	// 図鑑ナンバー表示モード

	void 			*ribbon;	// 配布リボンデータ

	void 			*poruto;	// 与えるポルトのデータ ( _PURUTO_DATA )

	PERAPVOICE 		*perap;		// ぺラップの鳴き声データ

	BOOL			ev_contest;	// コンテスト用
	KEYTOUCH_STATUS *kt_status;	// キータッチステータス
	BOOL			pokethlon;	// ポケスロンパフォーマンス画面表示かどうか
	BOOL			waza_chg;	// 技を入れ替えたかどうか TRUE = 入れ替えた, FALSE = それ以外

}PSTATUS_DATA;

// モード
enum {
	PST_MODE_NORMAL = 0,	// 通常
	PST_MODE_NO_WAZACHG,	// 技入れ替え不可
	PST_MODE_WAZAADD,		// 技覚え/技忘れ
	PST_MODE_PORUTO,		// ポルト使用				（使わない）
	PST_MODE_CONDITION,		// コンディション変更デモ	（使わない）
};

// パラメータタイプ
enum {
	PST_PP_TYPE_POKEPARAM = 0,		// POKEMON_PARAM
	PST_PP_TYPE_POKEPARTY,			// POKEPARTY
	PST_PP_TYPE_POKEPASO,			// POKEMON_PASO_PARAM
};

// 戻り
enum {
	PST_RET_DECIDE = 0,
	PST_RET_CANCEL,
};


// ページID
enum {
	PST_PAGE_INFO_MEMO = 0,	// 「ポケモンじょうほう」「トレーナーメモ」
	PST_PAGE_PARAM_B_SKILL,	// 「ポケモンのうりょく」「わざ説明」
	PST_PAGE_RIBBON,		// 「きねんリボン」「ポケスロンパフォーマンス」
	PST_PAGE_RET,			// 「もどる」
	PST_PAGE_MAX,
	PST_POKE1 = PST_PAGE_MAX,
	PST_POKE2,
	PST_POKE3,
	PST_POKE4,
	PST_POKE5,
	PST_POKE6,
};

enum {
	ST_ICON_POKERUS = 0,	// ポケルス
	ST_ICON_MAHI,			// 麻痺
	ST_ICON_KOORI,			// 氷
	ST_ICON_NEMURI,			// 眠り
	ST_ICON_DOKU,			// 毒
	ST_ICON_YAKEDO,			// 火傷
	ST_ICON_HINSI,			// 瀕死

	ST_ICON_NONE,			// 状態異常なし
};


//============================================================================================
//	グローバル変数
//============================================================================================
#ifndef P_STATUS_H_GLOBAL
GLOBAL const PROC_DATA PokeStatusProcData;	// プロセス定義データ
#endif


//============================================================================================
//	プロトタイプ宣言
//============================================================================================

//--------------------------------------------------------------------------------------------
/**
 * コンテストフラグを取得
 *
 * @param	sv		セーブデータ
 *
 * @return	コンテストフラグ
 */
//--------------------------------------------------------------------------------------------
GLOBAL BOOL PokeStatus_ContestFlagGet( SAVEDATA * sv );

//--------------------------------------------------------------------------------------------
/**
 * ページ作成
 *
 * @param	dat		ステータス画面データ
 * @param	tbl		ページテーブル
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
GLOBAL void PokeStatus_PageSet( PSTATUS_DATA * dat, const u8 * tbl );

//--------------------------------------------------------------------------------------------
/**
 * プレイヤー情報セット
 *
 * @param	dat		ステータス画面データ
 * @param	my		MYSTATUS
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
GLOBAL void PokeStatus_PlayerSet( PSTATUS_DATA * dat, const MYSTATUS * my );

//--------------------------------------------------------------------------------------------
/**
 * 状態異常アイコンのアーカイブインデックスを取得（キャラ）
 *
 * @param	none
 *
 * @return	アーカイブインデックス
 */
//--------------------------------------------------------------------------------------------
GLOBAL u32 BadStatusIconCharArcGet(void);

//--------------------------------------------------------------------------------------------
/**
 * 状態異常アイコンのアーカイブインデックスを取得（パレット）
 *
 * @param	none
 *
 * @return	アーカイブインデックス
 */
//--------------------------------------------------------------------------------------------
GLOBAL u32 BadStatusIconPlttArcGet(void);

//--------------------------------------------------------------------------------------------
/**
 * 状態異常アイコンのアーカイブインデックスを取得（セル）
 *
 * @param	none
 *
 * @return	アーカイブインデックス
 */
//--------------------------------------------------------------------------------------------
GLOBAL u32 BadStatusIconCellArcGet(void);

//--------------------------------------------------------------------------------------------
/**
 * 状態異常アイコンのアーカイブインデックスを取得（セルアニメ）
 *
 * @param	none
 *
 * @return	アーカイブインデックス
 */
//--------------------------------------------------------------------------------------------
GLOBAL u32 BadStatusIconCanmArcGet(void);

//--------------------------------------------------------------------------------------------
/**
 * 状態異常アイコンのアニメ番号を取得
 *
 * @param	pp		ポケモンデータ
 *
 * @return	アニメ番号
 */
//--------------------------------------------------------------------------------------------
GLOBAL u32 BadStatusIconAnmGet( POKEMON_PARAM * pp );




extern BOOL PokeStatus_PerformanceFlagGet( SAVEDATA * sv );

//==============================================================================
/**
 * @brief
 *
 * @param   stars		表示する☆の状態を格納する配列（ [5]まで確保して渡してください）
 *						0-4の値が入る（0:星無し 1:空の星 2:ノーマル星 3:GOOD星 4:BAD星)
 * @param   max			パフォーマンス値の最大
 * @param   num			パフォーマンス現状の値
 * @param   revision	パフォーマンス値のリビジョンコード PERFORMANCE_DIFF_CODE（PM_PERFORMANCE->revisionの値)
 * @param   affect		現在のコンディション値
 *
 * @retval  int		0:増減無し	1以上: プラス -1以下:マイナス
 */
//==============================================================================
extern int GetPerformanceMeterInfo( u8 *stars, int max, int num, int revison, int affect );

#undef GLOBAL
#endif	/* P_STATUS_H */